2
OO design and programming promotes:
1. Code reuse
2. Designs which localize the effects of adding new data types to the program 3. A software model which is “closer” to the physical model (physical things are objects and (usually) not actions!). This often leads to a design which localizes the effects of a “mid-stream” change in the software specification.
But what if the problem specification is static, the code is single use, and all of the data types are initially known? Then, depending on the problem size, probably some other methodology is more appropriate. For instance, a monolithic program which prints “hello world” will take a fraction of the machine instructions necessary to do the same task as the equivalent object-oriented program.